home *** CD-ROM | disk | FTP | other *** search
- GenModula 1.12 - Modula 2 Quelltextgenerator zur GadToolsBox
- ------------------------------------------------------------
-
- Dieses Programm stammt direkt vom Programm OG, dem Oberon
- Quelltextgenerator von Thomas Igracki und Kai Bolay ab.
-
- Für weitere Informationen, und der Entwicklung von OG.mod, sehen Sie
- bitte in der Dokumentation zum Programm nach:
- » GadToolsBox's great Oberon Source Generator
- » ===========================================
- »
- » This is the second release of the external Oberon source generator for
- » GadToolsBox 2.x. Please use it instead of the built in source generator
- » because some the internal version is buggy and will not be updated any more.
- »
- » Let's explan the history of generating Oberon source with GadToolsBox:
- » I (Kai Bolay) thougt that it would be a good idea that GadToolsBox supports
- » Oberon so I changed Jan van den Baard's C generator "GenC.c" to
- » "GenOberon.c" and asked Jan to add it to GTB. With GTB 2.0 Jan came up with
- » the idea of external source generators. Jan helped me (in fact he did all
- » the work! Thanks, Jan!) to make "GenOberon.c" a standalone program. Now
- » Thomas Igracki did the great job of converting to C program "GenOberon.c"
- » to the Oberon program "OG.mod". I did some minor modifications to "OG.mod"
- » and released it.
-
- Dieses Programm macht nahezu das gleiche wie OG. Nur wenige Punkte
- sind hinzugekommen und Fehler beseitigt worden. Trotz allem ist der
- gesamte Quelltext neu strukturiert und in einzelne Module aufgeteilt
- worden. In der Definitionsdatei sind nur sehr wenige Objekte
- aufgeführt, in der Zukunft könnte hier eine Erweiterung stattfinden.
-
-
- Aufruf:
- GenModula: NAME/A,TO=AS/A,RASTER/S,UNDERMOUSE/S,NODEF/S
-
- NAME
- Bereits erstellte GadToolsBox Schnittstellendatei.
-
- TO
- Basisname für die zu erzeugenden Module und Dateien. Dem Name darf
- ein Pfad vorangestellt sein.
-
- RASTER
- Bool'sches Argument um einen gefüllten Fensterhintergrund zu
- erhalten. Das geschieht jedoch nur, wenn die Fenster jeweils
- Bevelboxen enthalten.
-
- UNDERMOUSE
- Die Fenster werden an der aktuellen Mausposition geöffnet.
-
- NODEF
- Erzeugung einer Definitionsdatei mit der Endung "nodef". Diese Option
- ist für Sie hilfreich, wenn Sie eine bereits bestehende Oberfläche
- überarbeiten. Somit brauchen Sie das Modul, das die Oberfläche
- benutzt, nicht neu zu übersetzen. Weiterhin können Sie dadurch die
- neue Definitionsdatei, mit Suffix "nodef", gegen die alte vergleichen.
-
-
- Schnittstelle:
- Ich führe hier nur einige, wenige Hinweise zu den erzeugten
- Schnittstellendateien auf. Bitte schauen Sie auch in den
- Definitionsdateien nach.
-
- Die Prozeduren zum Anlegen und Entfernen der Screens, Windows und
- Gadgets werden, in Übereinstimmung mit der GadTools.Library, mit
- CreateXXX und FreeXXX bezeichnet. Dies sollte Ihnen anzeigen, daß
- diese Prozeduren mehr beinhalten als einfaches Öffnen oder
- Schließen von Fenstern oder Schirmen.
- Alle Prozeduren umfassen den Namen des aktuellen Projektes (siehe
- auch GadToolsBox).
- Zu den Ergebniswerten: der Rückgabewert 0 verweist auf einen
- erfolgreichen Aufruf, die anderen Werte weisen auf Fehler hin,
- für die speziellen Werte sehen Sie bitte im erzeugten Quelltext nach.
-
- Screen:
- PROCEDURE CreateTestScreen ( pubScreenName :ARRAY OF CHAR) :CARDINAL;
- PROCEDURE FreeTestScreen;
-
- CreateXXXScreen hat eventuell ein Argument, dies hängt vom
- gewählten Typ ab.
-
- Gadgets:
- PROCEDURE CreateListGadgets () :CARDINAL;
-
- Diese Prozedur können Sie benutzen um Gadgets zu erzeugen bevor
- das Fenster geöffnet wird. Die Gadgetliste wird immer implizit mit
- dem Aufruf FreeXXXWindow freigeben.
-
- Windows:
- PROCEDURE CreateListWindow ( createGadgets :BOOLEAN) :CARDINAL;
- PROCEDURE FreeListWindow;
- PROCEDURE RefreshListWindow;
-
- Die Erzeugung eines Fenster umfasst alle notwendigen Schritte.
- Geben Sie das Argument createGadgets = FALSE nur genau vor
- CreateXXXWindow an! Nach dem Erzeugen ist das Fenster bereits
- vollständig gezeichnet.
-
- Immer, wenn Sie eine IDCMP-Nachricht refreshWindow bekommen,
- sollten Sie RefreshXXXWindow aufrufen. Schließen Sie diesen Aufruf
- NIE mit GTBeginRefresh ... GTEndRefresh ein, dies geschieht
- bereits intern! Da Sie ja die GadToolsBox benutzen, sollte keine
- Ausgabe notwendig sein um den Fensterinhalt zu erneuern.
-
- Um Ihnen den Zugriff auf Gadgets, Menüs oder Fenster zu ermöglichen
- können Sie die in der Definitionsdatei angegebenen Zeiger BENUTZEN.
- ÄNDERN Sie diese aber nicht! Beachten Sie, daß Sie unbedingt die
- Konstanten, und NICHT deren Werte, benutzen um auf die Objekt zuzugreifen.
-
- Wenn Sie ein GetFile-Gadget benutzen möchten, müssen Sie das
- Programm mit einer zusätzlichen Option "l" binden. Geben Sie dafür
- -lkompletterPfad/bases.o -lkompletterPfad.o ProgramName
- ein. Seien Sie hiermit an das nicht anwesende Leerzeichen nach der
- l-Option erinnert,
-
-
- Zum Unterschiedlichen Verhalten vom Programm GenModula zu OG (Oberon
- Generator):
- Als erstes hatte ich eine eigene Definitiondatei für Modula zu
- erzeugen. Meiner Meinung nach ist das ein großer Fortschritt gegenüber
- Oberon, da für Sie weder die Notwendigkeit besteht die gesamte
- Definitionsdatei zu überprüfen noch die Schnittstellendatei mit einem
- Hilfsprogramm erzeugt werden muß. (Das Hilfsprogramm gehört zwar zum
- Oberon-System, das nützt jedoch keinem Modula-Anwender.)
-
- Weiterhin brauchen Sie sich um die korrekte Darstellung der Fenster
- nicht zu kümmern: weder wenn ein Fenster geöffnet wird noch danach.
- Rufen Sie einfach RenderXXXWindow auf, wenn Sie eine
- refreshWindow-Nachricht bekommen. Die Behandlung der
- Fensterdarstellung und Erneuerung ist somit eine große Verbesserung im
- Vergleich zu OG. Im Besonderen, wenn die RASTER-Option benutzt wird,
- wird die Darstellung in der richtigen Rehienfolge vorgenommen. Die
- Gadgets werden auch nur ein einziges mal gezeichnet.
-
-
- Falls Sie Vorschläge oder Fragen haben oder auch Fehler finden
- sollten, bin ich zu erreichen unter:
-
- Reiner B. Nix
- Snail Mail:
- Geranienhof 2
- 50769 Köln Seeberg
- Germany
-
- EMail:
- UseNet: rbnix@pool.informatik.rwth-aachen.de
-